In network systems, communication information is handled by a constant unit called a flow, and there are mechanisms that perform a quality control and the like in which a path control, filtering, and priority are used for each flow. The flow (also referred to as a packet flow) is one classification unit of packets, and is often classified on the basis of a TCP (Transmission Control Protocol) session or a transmitting/receiving node pair and the like.
For example, a case where the flows are discriminated therebetween on the basis of the IP (Internet Protocol) address and a TCP port of the transmitting/receiving node will be described by way of example. In this case, it may be said that all packets represented by “From [IP192.168.0.1: port 1000] to [IP192.168.0.2: port 80]” belong to the same flow. In addition, packets represented by “From [IP192.168.0.1: port1000] to [IP192.168.0.2: port 443]” is able to be determined as a separate flow. In such mechanisms, handling contents of the packets (for example, path setting, priority processing and the like) are determined by this flow unit.
In addition, in relay units that relay flows, the flows and processing information (for example, output ports or priorities and the like) corresponding thereto are stored in a table called a flow table. When packets are received, the relay unit searches the flow table on the basis of the contents of the received packets, and reads out corresponding processing information to determine processing such as transmission or discarding thereof.
For example, PTL 1 discloses a compression/expansion method of entries capable of registering more entries by performing pattern compression processing when the packet relay unit adds and registers flow table entries. In the compression/expansion method disclosed in PTL 1, when a new pattern to be newly registered is an incremental pattern which a difference is one bit with respect to a flow identification pattern of the entry, a mask pattern of the entry indicating the position of Don't Care bit for the flow identification pattern in flow identification is changed.
In addition, when a system is formed using the above-mentioned relay unit, there is a method in which the relay unit connected onto the network learns the paths autonomously by learning the MAC (Media Access Control) address for each port on the basis of a function included therein, or exchanging information with another relay unit. Meanwhile, when the relay unit exchanges information with another relay unit, there may also be a case where routing protocols for optimizing routing are used.
As a separate method, there is also a system in which the communication control unit controls the relay unit (or relay unit group) on the network. In such a system, when the relay unit from which packets are received is not able to determine the packet processing contents in the flow table search within the relay unit, the relay unit determines the packet processing contents by giving a query to the communication control unit.
FIG. 10 is a flow diagram illustrating general processing in a system in which a communication control unit controls a relay unit. When packets are received (step S91), the relay unit searches a flow table within the relay unit, and attempts to determine the output port of the packets (step S92). When the output port is able to be determined (YES in step S92), the relay unit outputs packets from the corresponding port and terminates a process (step S96). On the other hand, when the output port is not able to be determined (NO in step S92), the relay unit transmits an event to the communication control unit, and queries the unit about a method of resolving the packet processing (step S93). Here, the relay unit transmits a data string, including a portion or all of the packets received from the input port and information of the relay unit, to the communication control unit as an event. When receiving an event, the communication control unit resolves an output destination port through which the relay unit outputs the packets on the basis of the content thereof, and instructs the relay unit to update the flow table. When receiving update instructions from the communication control unit (step S94), the relay unit updates the flow table (step S95), and outputs the packets on the basis of the contents thereof (step S96).
Meanwhile, the event is a data string including at least a portion or all of the packets received from an input/output port and information of the relay unit. The communication control unit resolves the output destination port with reference to the event contents transmitted by the relay unit, and updates the flow table within the relay unit so as to transmit the received packets. Thereby, the packets are normally transmitted.
In addition, PTL 2 discloses a transmission band control unit in which a network control unit controls transmission bands of the entire network, and a flow transfer request from a user terminal is received, to create related router setting information and set the information for each router. In the transmission band control unit disclosed in PTL 2, when the network control unit receives the flow transfer request from the user terminal, a path that meets the request received by the network control unit is searched for to create path information. In addition, the network control unit creates router setting information in order to distribute the load in the direction in which the load of the network becomes uniform. The network control unit sets the path information and router setting information for each router.
In addition, PTL 3 discloses a network router in which a network management server controls an open programmable router and sets a flow control table. When receiving packets having reached a network, the network router disclosed in PTL 3 performs appropriate operations on packets including removal of header information, replacement of header information by new address information, and other well-known operations, using packet header information. At this time, a router controller controls a portion of the packets on the basis of setting of the flow control table. Meanwhile, the flow control table is maintained by the router controller, and the router controller itself receives information from a controller.
On the other hand, as described above, the relay unit stores the flow and processing information corresponding thereto within the flow table, and searches the flow table on the basis of the received packets, to determine processing such as transmission or discarding thereof. For this reason, it is necessary to set processing at a fine unit (fine granularity) for each control flow in order to control the flow at a fine level.
PTL 4 discloses an IP flow multistage hash method in which flows having different granularities are mixed using a two-stage table for search of a transfer unit. In the method disclosed in PTL 4, an IP packet destination IP address is hashed in a first table, and a destination IP address and an IP packet source IP address of are hashed as a set in a second table. Transfer means searches for the entry linked to a hash value destination of the first table on the basis of the destination IP address when a link to the first table is detected, and searches for the entry linked to a hash value destination of the second table by hashing a set of the destination IP address and the source IP address when a link to the second table is detected. When matching entries are detected, the transfer means performs a relay of the IP packets in accordance with the information thereof.